//#pragma comment(linker,"/STACK:16777216") /*16Mb*/
//#pragma comment(linker,"/STACK:33554432") /*32Mb*/
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<numeric>
#include<sstream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<memory>
#include<string>
#include<vector>
#include<cctype>
#include<list>
#include<queue>
#include<deque>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
using namespace std;

typedef unsigned long long      ui64;
typedef long long               i64;
typedef	vector<int>             VI;
typedef	vector<bool>            VB;
typedef	vector<VI>              VVI;
typedef	vector<string>          VS;
typedef	pair<int,int>           PII;
typedef map<string,int>         MSI;
typedef set<int>                SI;
typedef set<string>             SS;
typedef map<int,int>            MII;
typedef	pair<double,double>     PDD;

#define PB                      push_back
#define MP                      make_pair
#define X                       first
#define Y                       second
#define FOR(i, a, b)            for(int i = (a); i < (b); ++i)
#define RFOR(i, a, b)           for(int i = (a) - 1; i >= (b); --i)
#define CLEAR(a, b)             memset(a, b, sizeof(a))
#define SZ(a)                   int((a).size())
#define ALL(a)                  (a).begin(), (a).end()
#define RALL(a)                 (a).rbegin(), (a).rend()
#define INF                     (2000000000)
const double PI = acos(-1.0);

const double eps = 1e-10;

int getSide(double x, double y) {
	if( fabs(x)<eps )
		return ( y > eps ? 1 : 3);
	if( fabs(y)<eps )
		return ( x > eps ? 2 : 4);

	if( x>eps && y>eps )
		return ( (x - y) > eps ? 2 : 1);
	if( x>eps && y<eps )
		return ( (x - fabs(y)) > eps ? 2 : 3);
	if( x<eps && y>eps )
		return ( (fabs(x) - y) > eps ? 4 : 1);
	if( x<eps && y<eps )
		return ( (fabs(x) > fabs(y)) > eps ? 4 : 3);
}

double solve(double x, double y, double r, double h, double w) {
	double ans = 0.0;
	int side = getSide(x,y);
	double dx;
	switch (side) {
	case 1:
		dx = 0.5*w - y;
		break;
	case 2:
		dx = 0.5*w - x;
		break;
	case 3:
		dx = 0.5*w + y;
		break;
	case 4:
		dx = 0.5*w + x;
		break;
	}
	double dy = 2.0*dx*h/w;
	ans = PI*r*r*dy;
	ans = h*w*w/3.0 - ans;
	return ans;
}

int main()
{
	double h,w;
	cin >> h >> w;
	double x,y;
	cin >> x >> y;
	double r; cin >> r;
	printf("%.5lf\n", solve(x,y,r,h,w) );
    return 0;
}